#include <stdio.h>
#include <string.h>

// char *strtok(char *str, const char *sep)
// sep参数是一个字符串，定义了用作分隔符的字符集合
// str指定一个字符串，它包含了0个或多个由sep字符串中国一个或者多个分隔符分割的标记
// strtok函数找到str的下一个标记，并将其用\0结尾，返回一个指向这个标记的指针
// 重要：strtok函数会改变被操作的字符串，所以在使用strtok函数切分的字符串一般都是临时拷贝的内容并且可修改。

// strtok函数的第一个参数不为NULL，函数将找到str中第一个标记，strtok函数将保存它在字符串中的位置
// strtok函数的第一个参数为NULL，函数将在同一个字符串中被保存的位置开始，查找下一个标记
// 如果字符串中不存在更多的标记，则返回NULL指针
int main()
{
    char str[80] = "This is - www.runoob.com - website";
    const char s[2] = "-";
    char *token;

    // 获取第一个字符串
    // 第一次调用时，strtok()必须给予参数str字符串
    token = strtok(str, s);
    printf("1 = %s \n", token);
    // 往后的调用则将参数s设置成NULL
    token = strtok(NULL, s);
    printf("2 = %s \n", token);

    token = strtok(NULL, s);
    printf("3 = %s \n", token);

    char strEx[80] = "This is - www.runoob.com - website";
    char *tokenEx = strtok(strEx, s);
    // 继续获取其他字符串
    while (tokenEx != NULL)
    {
        printf("tokenEx = %s \n", tokenEx);
        // 往后的调用则将参数s设置成NULL。
        tokenEx = strtok(NULL, s); // 每次调用成功则返回指向被分割出片段的指针
    }

    char p1[80] = "This is - www.runoob.com - website";
    const char p2[2] = "-";
    char *ret;
    for(ret = strtok(p1,p2) ;ret != NULL;ret = strtok(NULL,p2)){
        printf("ret = %s \n",ret);
    }

    return 0;
}
